package frequency

// 限流规则，比如 10次/秒  100次/3分钟
type LimiterRule struct {
	Count  uint  // 次数
	Period int64 // 周期时长，单位为秒
}

// 请求频率限制器。保护接口按照预置的限流规则拦截请求。
type Limiter interface {
	// 注册限流规则集合
	RegisterRules(map[string]LimiterRule) error
	// 检查当前访问频率是否超过配置限制，并将当前访问计入统计
	// 如果通过检查返回true
	Check(ruleCode string, key interface{}) (bool, error)
}
